package com.tmt.im.wallet.controler.vo;

import com.tmt.im.common.enums.ChannelType;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Nullable;
import jakarta.persistence.Column;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Lob;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import org.springframework.web.multipart.MultipartFile;

import java.io.Serial;
import java.io.Serializable;

import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;

/**
 * @Description TODO
 * @Author wuyi
 * @Date 2024/10/22 11:35
 * @Version 1.0
 **/
@Getter
@Setter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "WithdrawParamBindingRequest", description = "提现参数绑定请求对象")
public class WithdrawParamBindingRequest implements Serializable {

    @Serial
    private static final long serialVersionUID = -87995746953079852L;

    /**
     * 支付类型
     */
    @Schema(description = "支付通道类型：WE_CHAT、ALI_PAY、BLANK_CARD")
    @NotNull(message = "支付通道类型不能为null")
    @NotBlank(message = "支付通道类型不能为空串")
    private ChannelType channelType;

    @Schema(description = "支付宝账号或银行卡号")
    @Nullable
    private String bankCardAccount;

    @Schema(description = "开户行信息")
    @Nullable
    private String openAccountBank;

    @Schema(description = "微信收款人昵称，或支付宝收款人(真实姓名)，或开户人姓名")
    @NotNull(message = "收款人名称不能为null")
    @NotBlank(message = "收款人名称不能为空串")
    private String accountHolder;

    @Schema(description = "上传的微信收款二维码数据")
    @Nullable
    private MultipartFile fileData;
}
